package com.google.code.gwtmvpscaffold;

import java.util.Map;

import com.google.common.collect.Maps;

/**
 * 
 * @author Ismet Ozalp
 * 
 */
public class Variables {

  /**
   * Filename,List required variables
   */
  public static final Map<String, Map<String, String>> variableMap = Maps.newHashMap();

  static {
    // .
    Map<String, String> pomFileVariables = Maps.newHashMap();
    pomFileVariables.put("PACKAGE_NAME", "_INPUT_");
    pomFileVariables.put("PROJECT_NAME", "_INPUT_");
    pomFileVariables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    variableMap.put("pom.xml", pomFileVariables);

    Map<String, String> dotProjectFileVariables = Maps.newHashMap();
    dotProjectFileVariables.put("PROJECT_NAME", "_INPUT_");
    variableMap.put("$DOT$project", dotProjectFileVariables);

    Map<String, String> dotClasspathFileVariables = Maps.newHashMap();
    variableMap.put("$DOT$classpath", dotClasspathFileVariables);

    // .settings
    Map<String, String> comGoogleGdtRclipseCorePrefsVariables = Maps.newHashMap();
    variableMap.put("com.google.gdt.eclipse.core.prefs", comGoogleGdtRclipseCorePrefsVariables);

    Map<String, String> DOTJsdtscope = Maps.newHashMap();
    variableMap.put("$DOT$jsdtscope", DOTJsdtscope);

    Map<String, String> comGoogleGwtEclipseCorePrefs = Maps.newHashMap();
    variableMap.put("com.google.gwt.eclipse.core.prefs", comGoogleGwtEclipseCorePrefs);

    Map<String, String> orgEclipseCoreResourcesPrefs = Maps.newHashMap();
    variableMap.put("org.eclipse.core.resources.prefs", orgEclipseCoreResourcesPrefs);

    Map<String, String> orgEclipseJdtCorePrefs = Maps.newHashMap();
    variableMap.put("org.eclipse.jdt.core.prefs", orgEclipseJdtCorePrefs);

    Map<String, String> orgEclipseM2eCorePrefs = Maps.newHashMap();
    variableMap.put("org.eclipse.m2e.core.prefs", orgEclipseM2eCorePrefs);

    Map<String, String> orgEclipseWstCommonComponentVariables = Maps.newHashMap();
    orgEclipseWstCommonComponentVariables.put("PROJECT_NAME", "_INPUT_");
    variableMap.put("org.eclipse.wst.common.component", orgEclipseWstCommonComponentVariables);

    Map<String, String> orgEclipseWstCommonProjectFacetCoreXml = Maps.newHashMap();
    variableMap.put("org.eclipse.wst.common.project.facet.core.xml",
        orgEclipseWstCommonProjectFacetCoreXml);

    // package.client
    Map<String, String> clientFactoryFileVariables = Maps.newHashMap();
    clientFactoryFileVariables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    clientFactoryFileVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("ClientFactory.java", clientFactoryFileVariables);

    Map<String, String> clientFactoryImplFileVariables = Maps.newHashMap();
    clientFactoryImplFileVariables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    clientFactoryImplFileVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("ClientFactoryImpl.java", clientFactoryImplFileVariables);

    Map<String, String> project_name_FileVariables = Maps.newHashMap();
    project_name_FileVariables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    project_name_FileVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$.java", project_name_FileVariables);

    // package.client.widget

    Map<String, String> appwidgetVariables = Maps.newHashMap();
    appwidgetVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("AppWidget.java", appwidgetVariables);

    Map<String, String> appwidgetUIBinderVariables = Maps.newHashMap();
    variableMap.put("AppWidget.ui.xml", appwidgetUIBinderVariables);

    // package.client.view
    Map<String, String> basicViewVariables = Maps.newHashMap();
    basicViewVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("BasicView.java", basicViewVariables);

    // package.client.view.impl
    Map<String, String> abstractBasicViewVariables = Maps.newHashMap();
    abstractBasicViewVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("AbstractBasicView.java", abstractBasicViewVariables);

    // package.client.place
    Map<String, String> basicPlaceVariables = Maps.newHashMap();
    basicPlaceVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("BasicPlace.java", basicPlaceVariables);

    Map<String, String> appPlaceHistoryMapperVariables = Maps.newHashMap();
    appPlaceHistoryMapperVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("AppPlaceHistoryMapper.java", appPlaceHistoryMapperVariables);

    // package.client.mvp
    Map<String, String> abstractActivityMapperVariables = Maps.newHashMap();
    abstractActivityMapperVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("AbstractActivityMapper.java", abstractActivityMapperVariables);

    // package.client.activity
    Map<String, String> abstractBasicActivityVariables = Maps.newHashMap();
    abstractBasicActivityVariables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("AbstractBasicActivity.java", abstractBasicActivityVariables);

    // package.server
    Map<String, String> projectServiceImpl_Variables = Maps.newHashMap();
    projectServiceImpl_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    projectServiceImpl_Variables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$ServiceImpl.java",
        projectServiceImpl_Variables);

    // package.shared
    Map<String, String> projectService_Variables = Maps.newHashMap();
    projectService_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    projectService_Variables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$Service.java", projectService_Variables);

    Map<String, String> projectServiceAsync_Variables = Maps.newHashMap();
    projectServiceAsync_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    projectServiceAsync_Variables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$ServiceAsync.java",
        projectServiceAsync_Variables);

    // package
    Map<String, String> projectGwtXML_Variables = Maps.newHashMap();
    projectGwtXML_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    projectGwtXML_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE_LOWER_CASE", "_INPUT_");
    projectGwtXML_Variables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$.gwt.xml", projectGwtXML_Variables);

    /**
     * other
     */
    // jspfile
    Map<String, String> jsp_Variables = Maps.newHashMap();
    jsp_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE_LOWER_CASE", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$.jsp", jsp_Variables);

    // webxml
    Map<String, String> webxml_Variables = Maps.newHashMap();
    webxml_Variables.put("PACKAGE_NAME", "_INPUT_");
    webxml_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    webxml_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE_LOWER_CASE", "_INPUT_");
    variableMap.put("web.xml", webxml_Variables);

    // test class
    Map<String, String> test_Variables = Maps.newHashMap();
    test_Variables.put("PROJECT_NAME_CLASS_NAME_COMPATIBLE", "_INPUT_");
    test_Variables.put("PACKAGE_NAME", "_INPUT_");
    variableMap.put("$PROJECT_NAME_CLASS_NAME_COMPATIBLE$Test.java", test_Variables);

  }

}
